home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / dev / basic / clockita.lha / Orologio.text < prev    next >
Encoding:
Text File  |  2001-03-08  |  25.7 KB  |  1,006 lines

  1. ;-> Orologio by Stefano Regattin
  2. ;d> 9 ottobre 1998 da Clock
  3. ;m> 10,11,16,17,19,24,29 ottobre 1998
  4. ;m> 4,6 novembre 1998
  5. ;m> 13,14,23 dicembre 1998
  6. ;m> 3 gennaio 1999
  7. ;m> 9,12 marzo 1999
  8. ;m> 25,26 settembre 1999
  9. ;m> 1,2,3,5,6,7,8,9,10,11,22,27,28 febbraio 2000
  10. ;m> 2,3,4,6,9,10,30,31 marzo 2000
  11. ;m> 6,9,16,25,30 aprile 2000
  12. ;m> 1,7,9,21 maggio 2000
  13. ;m> 2,15 giugno 2000
  14. ;m> 12,13 agosto 2000
  15. ;m> 16 novembre 2000
  16. ;m> 1,29,30 gennaio 2001
  17. ;------------------------
  18. #HaiCambiatoLeDimensioniDellaFinestra=2
  19. #HaiPremutoUnTastoDelTopo=8
  20. #HaiRilasciatoUnGadget=$40
  21. #HaiChiusoLaFinestra=$200
  22.  
  23. DEFTYPE .l RastPortFinestra
  24.  
  25. DEFTYPE .b AltezzaFont,AltezzaFontRegistrata
  26. DEFTYPE .b NumeroToolType,StatoAllarme,ToolTypeScritti
  27.  
  28. DEFTYPE .w
  29.  
  30. Statement AggiustaDimensioniFinestraZero{}
  31. SHARED Angolo$
  32. SHARED LunXFinestraZero
  33. SHARED LunXSchermo
  34. SHARED LunYFinestraZero
  35. SHARED PosXFinestraZero
  36. SHARED PosXFinestraZeroAngoloOpposto
  37. SHARED PosYFinestraZero
  38. SHARED PosYFinestraZeroAngoloOpposto
  39.  Select Angolo$
  40.  Case "TOP-RIGHT"
  41.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  42.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  43.   EndIf
  44.  Case "BOTTOM-RIGHT"
  45.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  46.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  47.   EndIf
  48.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  49.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  50.   EndIf
  51.  Case "BOTTOM-LEFT"
  52.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  53.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  54.   EndIf
  55.  End Select
  56.  If LunXFinestraZero>LunXSchermo Then LunXFinestraZero=LunXSchermo
  57.  If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo Then PosXFinestraZero=LunXSchermo-LunXFinestraZero
  58.  If PosXFinestraZero<0 Then PosXFinestraZero=0
  59.  If LunYFinestraZero>WBHeight Then LunYFinestraZero=WBHeight
  60.  If PosYFinestraZero+LunYFinestraZero-1>WBHeight Then PosYFinestraZero=WBHeight-LunYFinestraZero
  61.  If PosYFinestraZero<AltezzaFontSchermo+3 Then PosYFinestraZero=AltezzaFontSchermo+3
  62. End Statement
  63.  
  64. Statement ApriFinestraZero{}
  65. SHARED ColoreSfondo
  66. SHARED LunXFinestraZero
  67. SHARED LunYFinestraZero
  68. SHARED PosXFinestraZero
  69. SHARED PosYFinestraZero
  70. SHARED RastPortFinestra
  71.  Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$40F,"",1,2
  72.  WTitle "Orologio","by Stefano Regattin e-mail->stefano.regattin@tin.it"
  73.  RastPortFinestra=RastPort(0)
  74.  WindowFont 0
  75.  Menus Off
  76.  WCls ColoreSfondo
  77. End Statement
  78.  
  79. Statement LeggiToolType{}
  80. SHARED Angolo$
  81. SHARED AngoloRegistrato$
  82. SHARED ColoreSfondo
  83. SHARED ColoreSfondoRegistrato
  84. SHARED ColoreTesto
  85. SHARED ColoreTestoRegistrato
  86. SHARED FontOrologio$
  87. SHARED FontOrologioRegistrato$
  88. SHARED IconaOrologio$
  89. SHARED AltezzaFont
  90. SHARED AltezzaFontRegistrata
  91. SHARED PosXFinestraZero
  92. SHARED PosXFinestraZeroRegistrata
  93. SHARED PosYFinestraZero
  94. SHARED PosYFinestraZeroRegistrata
  95.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  96.  If ToolTypeLetti>0
  97.   NuovoFontOrologio$=FindToolValue("FONTNAME")
  98.   NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  99.   NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  100.   NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  101.   NuovoAngolo$=FindToolValue("ANGLE")
  102.   NuovoColoreTesto$=FindToolValue("TEXTCOLOR")
  103.   NuovoColoreSfondo$=FindToolValue("BACKCOLOR")
  104.  
  105.   If NuovoFontOrologio$<>""
  106.    FontOrologioRegistrato$=NuovoFontOrologio$
  107.    FontOrologio$=NuovoFontOrologio$
  108.   EndIf
  109.  
  110.   If NuovaAltezzaFont$<>""
  111.    AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
  112.    AltezzaFont=Val(NuovaAltezzaFont$)
  113.   EndIf
  114.  
  115.   If NuovaPosXFinestraZero$<>""
  116.    PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
  117.    PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  118.   EndIf
  119.  
  120.   If NuovaPosYFinestraZero$<>""
  121.    PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
  122.    PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  123.   EndIf
  124.  
  125.   If NuovoAngolo$<>""
  126.    AngoloRegistrato$=NuovoAngolo$
  127.    Angolo$=NuovoAngolo$
  128.   EndIf
  129.  
  130.   If NuovoColoreTesto$<>""
  131.    ColoreTestoRegistrato=Val(NuovoColoreTesto$)
  132.    ColoreTesto=Val(NuovoColoreTesto$)
  133.   EndIf
  134.  
  135.   If NuovoColoreSfondo$<>""
  136.    ColoreSfondoRegistrato=Val(NuovoColoreSfondo$)
  137.    ColoreSfondo=Val(NuovoColoreSfondo$)
  138.   EndIf
  139.  
  140.   FreeIconObject
  141.  
  142.  EndIf
  143. End Statement
  144.  
  145. Statement ScriviToolType{}
  146. SHARED Angolo$
  147. SHARED AngoloRegistrato$
  148. SHARED ColoreSfondo
  149. SHARED ColoreSfondoRegistrato
  150. SHARED ColoreTesto
  151. SHARED ColoreTestoRegistrato
  152. SHARED FontOrologio$
  153. SHARED FontOrologioRegistrato$
  154. SHARED IconaOrologio$
  155. SHARED AltezzaFont
  156. SHARED AltezzaFontRegistrata
  157. SHARED PosXFinestraZero
  158. SHARED PosXFinestraZeroAngoloOpposto
  159. SHARED PosXFinestraZeroRegistrata
  160. SHARED PosYFinestraZero
  161. SHARED PosYFinestraZeroAngoloOpposto
  162. SHARED PosYFinestraZeroRegistrata
  163. SHARED ToolTypeScritti
  164.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  165.  If ToolTypeLetti>0
  166.   If FindToolType("DONOTWAIT")=False Then NewToolType "DONOTWAIT",""
  167.  
  168.   If FindToolType("FONTNAME")=True
  169.    SetToolValue "FONTNAME",FontOrologio$
  170.   Else
  171.    NewToolType "FONTNAME",FontOrologio$
  172.   EndIf
  173.  
  174.   If FindToolType("FONTSIZE")=True
  175.    SetToolValue "FONTSIZE",Str$(AltezzaFont)
  176.   Else
  177.    NewToolType "FONTSIZE",Str$(AltezzaFont)
  178.   EndIf
  179.  
  180.   Select Angolo$
  181.   Case "TOP-LEFT"
  182.    If FindToolType("WINDOWX")=True
  183.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  184.    Else
  185.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  186.    EndIf
  187.  
  188.    If FindToolType("WINDOWY")=True
  189.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  190.    Else
  191.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  192.    EndIf
  193.   Case "TOP-RIGHT"
  194.    If FindToolType("WINDOWX")=True
  195.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  196.    Else
  197.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  198.    EndIf
  199.  
  200.    If FindToolType("WINDOWY")=True
  201.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  202.    Else
  203.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  204.    EndIf
  205.   Case "BOTTOM-RIGHT"
  206.    If FindToolType("WINDOWX")=True
  207.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  208.    Else
  209.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  210.    EndIf
  211.  
  212.    If FindToolType("WINDOWY")=True
  213.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  214.    Else
  215.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  216.    EndIf
  217.   Case "BOTTOM-LEFT"
  218.    If FindToolType("WINDOWX")=True
  219.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  220.    Else
  221.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  222.    EndIf
  223.  
  224.    If FindToolType("WINDOWY")=True
  225.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  226.    Else
  227.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  228.    EndIf
  229.   End Select
  230.  
  231.   If FindToolType("ANGLE")=True
  232.    SetToolValue "ANGLE",Angolo$
  233.   Else
  234.    NewToolType "ANGLE",Angolo$
  235.   EndIf
  236.  
  237.   If FindToolType("TEXTCOLOR")=True
  238.    SetToolValue "TEXTCOLOR",Str$(ColoreTesto)
  239.   Else
  240.    NewToolType "TEXTCOLOR",Str$(ColoreTesto)
  241.   EndIf
  242.  
  243.   If FindToolType("BACKCOLOR")=True
  244.    SetToolValue "BACKCOLOR",Str$(ColoreSfondo)
  245.   Else
  246.    NewToolType "BACKCOLOR",Str$(ColoreSfondo)
  247.   EndIf
  248.  
  249.   ToolTypeScritti=PutIconObject(IconaOrologio$)
  250.   If ToolTypeScritti=True
  251.    FontOrologioRegistrato$=FontOrologio$
  252.    AltezzaFontRegistrata=AltezzaFont
  253.    AngoloRegistrato$=Angolo$
  254.    Select Angolo$
  255.    Case "TOP-LEFT"
  256.     PosXFinestraZeroRegistrata=PosXFinestraZero
  257.     PosYFinestraZeroRegistrata=PosYFinestraZero
  258.    Case "TOP-RIGHT"
  259.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  260.     PosYFinestraZeroRegistrata=PosYFinestraZero
  261.    Case "BOTTOM-RIGHT"
  262.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  263.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  264.    Case "BOTTOM-LEFT"
  265.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngolo
  266.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  267.    End Select
  268.    ColoreTestoRegistrato=ColoreTesto
  269.    ColoreSfondoRegistrato=ColoreSfondo
  270.   EndIf
  271.  
  272.   FreeIconObject
  273.  
  274.  EndIf
  275. End Statement
  276.  
  277. Statement CercaFont{}
  278. SHARED NuovoFontOrologio$
  279. SHARED AltezzaFont
  280.  NEWTYPE .FontInfo
  281.   Nome$
  282.   Altezza.w
  283.   Stile.b
  284.   Segnalatori
  285.   PennaUno
  286.   PennaDue
  287.   ModoDisegno
  288.   Pad
  289.  End NEWTYPE
  290.  
  291.  *Font.FontInfo=ASLFontRequest(0)
  292.  
  293.  If *Font<>0
  294.   NuovoFontOrologio$=*Font\Nome
  295.   AltezzaFont=*Font\Altezza
  296.  EndIf
  297. End Statement
  298.  
  299. Statement CambiaColori{}
  300. SHARED ColoreSfondo
  301. SHARED ColoreTesto
  302. SHARED LunXSchermo
  303.  ColoriWB=2^WBDepth
  304.  SpazioColori=Max(ColoriWB/16,1)*8
  305.  PosXFinestraDue=WindowX
  306.  PosYFinestraDue=WindowY
  307.  LunXFinestraDue=WLeftOff+16*8+4
  308.  LunYFinestraDue=WTopOff+SpazioColori+1+13+12+4
  309.  
  310.  If PosXFinestraDue+LunXFinestraDue>LunXSchermo Then PosXFinestraDue=LunXSchermo-LunXFinestraDue
  311.  If PosYFinestraDue+LunYFinestraDue>WBHeight Then PosYFinestraDue=WBHeight-LunYFinestraDue
  312.  
  313.  Window 2,PosXFinestraDue,PosYFinestraDue,LunXFinestraDue,LunYFinestraDue,$140E,"",-1,-1,1
  314.  WTitle "Colori","Cambia i colori dell'orologio"
  315.  WindowFont 1
  316.  Menus Off
  317.  
  318.  XFinaleBordo=InnerWidth-8
  319.  GadgetBorder 4,SpazioColori+3,XFinaleBordo,8
  320.  GadgetBorder 4,SpazioColori+16,XFinaleBordo,8
  321.  
  322.  For Colore=0 To ColoriWB-1
  323.   XColore=(Colore MOD 16)*8
  324.   YColore=(Colore/16)*8
  325.   WBox XColore,YColore,XColore+7,YColore+7,Colore
  326.  Next
  327.  
  328.  Repeat
  329.   WBox 4,SpazioColori+3,XFinaleBordo+3,SpazioColori+10,ColoreTesto
  330.   WBox 4,SpazioColori+16,XFinaleBordo+3,SpazioColori+23,ColoreSfondo
  331.  
  332.   EventoFinestraDue.l=WaitEvent
  333.  
  334.   Select EventoFinestraDue
  335.   Case #HaiPremutoUnTastoDelTopo
  336.    If WMouseX>-1 AND WMouseY>-1 AND WMouseX<128 AND WMouseY<SpazioColori
  337.     Colore=WMouseY/8*16+WMouseX/8
  338.     Select MButtons
  339.     Case 1
  340.      If Colore<>ColoreSfondo Then ColoreTesto=Colore
  341.     Case 2
  342.      If Colore<>ColoreTesto Then ColoreSfondo=Colore
  343.     End Select
  344.    EndIf
  345.   End Select
  346.  Until EventoFinestraDue=#HaiChiusoLaFinestra
  347.  CloseWindow 2
  348.  Use Window 1
  349. End Statement
  350.  
  351. Statement Parametri{}
  352. SHARED Angolo$
  353. SHARED AngoloRegistrato$
  354. SHARED NuovoFontOrologio$
  355. SHARED ColoreSfondo
  356. SHARED ColoreSfondoRegistrato
  357. SHARED ColoreTesto
  358. SHARED ColoreTestoRegistrato
  359. SHARED OraAllarme$
  360. SHARED OraDiOggi$
  361. SHARED FontOrologio$
  362. SHARED FontOrologioRegistrato$
  363. SHARED AltezzaFont
  364. SHARED AltezzaFontRegistrata
  365. SHARED LunXFinestraZero
  366. SHARED LunYFinestraZero
  367. SHARED LunXSchermo
  368. SHARED PosXFinestraZero
  369. SHARED PosXFinestraZeroAngoloOpposto
  370. SHARED PosXFinestraZeroRegistrata
  371. SHARED PosYFinestraZero
  372. SHARED PosYFinestraZeroAngoloOpposto
  373. SHARED PosYFinestraZeroRegistrata
  374. SHARED StatoAllarme
  375. SHARED ToolTypeScritti
  376.  Dim Freccia(5)
  377.  BitMap 0,32,16,2
  378.  Freccia(0)=0:Freccia(1)=0
  379.  Freccia(2)=7:Freccia(3)=0
  380.  Freccia(4)=0:Freccia(5)=7
  381.  Polyf 3,&Freccia(0),1
  382.  GetaShape 0,0,0,8,8
  383.  XFlip 0
  384.  Blit 0,8,0
  385.  GetaShape 0,0,0,8,8
  386.  GetaShape 1,8,0,8,8
  387.  YFlip 1
  388.  Blit 1,16,0
  389.  GetaShape 1,8,0,8,8
  390.  GetaShape 2,16,0,8,8
  391.  XFlip 2
  392.  Blit 2,24,0
  393.  GetaShape 2,16,0,8,8
  394.  GetaShape 3,24,0,8,8
  395.  Freccia(0)=0:Freccia(1)=8
  396.  Freccia(2)=7:Freccia(3)=8
  397.  Freccia(4)=0:Freccia(5)=15
  398.  Polyf 3,&Freccia(0),2
  399.  GetaShape 4,0,8,8,8
  400.  XFlip 4
  401.  Blit 4,8,8
  402.  GetaShape 4,0,8,8,8
  403.  GetaShape 5,8,8,8,8
  404.  YFlip 5
  405.  Blit 5,16,8
  406.  GetaShape 5,8,8,8,8
  407.  GetaShape 6,16,8,8,8
  408.  XFlip 6
  409.  Blit 6,24,8
  410.  GetaShape 6,16,8,8,8
  411.  GetaShape 7,24,8,8,8
  412.  
  413.  Free BitMap 0
  414.  
  415.  Use IntuiFont 1
  416.  StringGadget 0,  1, 1,  0, 0,6,6*8
  417.  StringGadget 0,  1,14,  0, 1,25,106
  418.  StringGadget 0, 75, 1,  0, 2,4,4*8
  419.  StringGadget 0,  9,27,  0, 3,5,5*8
  420.  StringGadget 0, 67,27,  0, 4,5,5*8
  421.  StringGadget 0,  9,62,  0, 5,5,5*8
  422.  StringGadget 0, 67,62,  0, 6,5,5*8
  423.  ShapeGadget  0, 92,42,512, 7,0,4
  424.  ShapeGadget  0,103,42,512, 8,1,5
  425.  ShapeGadget  0,103,51,512, 9,2,6
  426.  ShapeGadget  0, 92,51,512,10,3,7
  427.  TextGadget   0, 58, 1,  1,11,"A"
  428.  TextGadget   0,  1,75,  0,12,"    Colori   "
  429.  TextGadget   0,  1,87,  1,13,"*** Salva ***"
  430.  
  431.  PosXFinestraZero=WindowX-WLeftOff
  432.  PosYFinestraZero=WindowY-WTopOff
  433.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  434.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  435.  
  436.  PosXFinestraUno=WindowX
  437.  PosYFinestraUno=WindowY
  438.  LunXFinestraUno=124
  439.  LunYFinestraUno=WTopOff+105
  440.  
  441.  If PosXFinestraUno+LunXFinestraUno>LunXSchermo Then PosXFinestraUno=LunXSchermo-LunXFinestraUno
  442.  If PosYFinestraUno+LunYFinestraUno>WBHeight Then PosYFinestraUno=WBHeight-LunYFinestraUno
  443.  
  444.  Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140E,"",-1,-1,0
  445.  WTitle "Parametri","Imposta i parametri dell'orologio"
  446.  WColour 1,0
  447.  WindowFont 1
  448.  Menus Off
  449.  
  450.  GadgetBorder 92,42,19,17
  451.  WLocate  0,29:Print "X"
  452.  WLocate 58,29:Print "Y"
  453.  WLocate  1,43:Print"Angolo"
  454.  WLocate 40,52:Print"fisso>"
  455.  WLocate  0,64:Print "X"
  456.  WLocate 58,64:Print "Y"
  457.  
  458.  Toggle 0,11,StatoAllarme
  459.  Redraw 1,11
  460.  
  461.  Select Angolo$
  462.  Case "TOP-LEFT"
  463.   Enable  0,3
  464.   Enable  0,4
  465.   Disable 0,5
  466.   Disable 0,6
  467.   Toggle  0,7,On
  468.   Redraw 1,7
  469.  Case "TOP-RIGHT"
  470.   Enable  0,3
  471.   Disable 0,4
  472.   Disable 0,5
  473.   Enable  0,6
  474.   Toggle  0,8,On
  475.   Redraw 1,8
  476.  Case "BOTTOM-RIGHT"
  477.   Disable 0,3
  478.   Disable 0,4
  479.   Enable  0,5
  480.   Enable  0,6
  481.   Toggle  0,9,On
  482.   Redraw 1,9
  483.  Case "BOTTOM-LEFT"
  484.   Disable 0,3
  485.   Enable  0,4
  486.   Enable  0,5
  487.   Disable 0,6
  488.   Toggle  0,10,On
  489.   Redraw 1,10
  490.  End Select
  491.  
  492.  Redraw 1,3
  493.  Redraw 1,4
  494.  Redraw 1,5
  495.  Redraw 1,6
  496.  
  497.  If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)
  498.  
  499.  Repeat
  500.   SetString 0,0,OraAllarme$
  501.   Redraw 1,0
  502.   SetString 0,1,FontOrologio$
  503.   Redraw 1,1
  504.   SetString 0,2,Str$(AltezzaFont)
  505.   Redraw 1,2
  506.   SetString 0,3,Str$(PosXFinestraZero)
  507.   Redraw 1,3
  508.   SetString 0,4,Str$(PosYFinestraZero)
  509.   Redraw 1,4
  510.   SetString 0,5,Str$(PosXFinestraZeroAngoloOpposto)
  511.   Redraw 1,5
  512.   SetString 0,6,Str$(PosYFinestraZeroAngoloOpposto)
  513.   Redraw 1,6
  514.  
  515.   ValoriCambiati.b=False
  516.   If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  517.   If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  518.   Select Angolo$
  519.   Case "TOP-LEFT"
  520.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  521.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  522.   Case "TOP-RIGHT"
  523.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  524.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  525.   Case "BOTTOM-RIGHT"
  526.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  527.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  528.   Case "BOTTOM-LEFT"
  529.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  530.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  531.   End Select
  532.   If Angolo$<>AngoloRegistrato$ Then ValoriCambiati=True
  533.   If ColoreTesto<>ColoreTestoRegistrato Then ValoriCambiati=True
  534.   If ColoreSfondo<>ColoreSfondoRegistrato Then ValoriCambiati=True
  535.   If ValoriCambiati=True Then Enable 0,13 Else Toggle 0,13,Off:Disable 0,13
  536.   Redraw 1,13
  537.  
  538.   EventoFinestraUno.l=WaitEvent
  539.  
  540.   Select EventoFinestraUno
  541.   Case #HaiRilasciatoUnGadget
  542.    If GadgetHit<7 Then ActivateString 1,GadgetHit
  543.    Select GadgetHit
  544.    Case 0
  545.     OraAllarme$=StringText$(0,0)
  546.    Case 1
  547.     NuovoFontOrologio$=StringText$(0,1)
  548.     If NuovoFontOrologio$="" Then CercaFont{}
  549.     If Len(NuovoFontOrologio$)>0
  550.      If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
  551.      If Exists("FONTS:"+NuovoFontOrologio$)
  552.       FontOrologio$=NuovoFontOrologio$
  553.      EndIf
  554.     EndIf
  555.    Case 2
  556.     AltezzaFont=Val(StringText$(0,2))
  557.     AltezzaFont=Max(AltezzaFont,6)
  558.    Case 3
  559.     PosXFinestraZero=Val(StringText$(0,3))
  560.    Case 4
  561.     PosYFinestraZero=Val(StringText$(0,4))
  562.    Case 5
  563.     PosXFinestraZeroAngoloOpposto=Val(StringText$(0,5))
  564.    Case 6
  565.     PosYFinestraZeroAngoloOpposto=Val(StringText$(0,6))
  566.    Case 7
  567.     If GadgetStatus(0,7)=True Then Angolo$="TOP-LEFT"
  568.    Case 8
  569.     If GadgetStatus(0,8)=True Then Angolo$="TOP-RIGHT"
  570.    Case 9
  571.     If GadgetStatus(0,9)=True Then Angolo$="BOTTOM-RIGHT"
  572.    Case 10
  573.     If GadgetStatus(0,10)=True Then Angolo$="BOTTOM-LEFT"
  574.    Case 11
  575.     StatoAllarme=GadgetStatus(0,11)
  576.    Case 12
  577.     CambiaColori{}
  578.     Toggle 0,12,Off
  579.    Case 13
  580.     ScriviToolType{}
  581.     If ToolTypeScritti=True
  582.      Toggle 0,13,Off
  583.      Disable 0,13
  584.      Redraw 1,13
  585.     Else
  586.      Toggle 0,13,On
  587.     EndIf
  588.    End Select
  589.  
  590.    Select Angolo$
  591.    Case "TOP-LEFT"
  592.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  593.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  594.     Enable  0,3
  595.     Enable  0,4
  596.     Disable 0,5
  597.     Disable 0,6
  598.    Case "TOP-RIGHT"
  599.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  600.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  601.     Disable 0,3
  602.     Enable  0,4
  603.     Enable  0,5
  604.     Disable 0,6
  605.    Case "BOTTOM-RIGHT"
  606.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  607.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  608.     Disable 0,3
  609.     Disable 0,4
  610.     Enable  0,5
  611.     Enable  0,6
  612.    Case "BOTTOM-LEFT"
  613.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  614.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  615.     Enable  0,3
  616.     Disable 0,4
  617.     Disable 0,5
  618.     Enable  0,6
  619.    End Select
  620.  
  621.   End Select
  622.  Until EventoFinestraUno=#HaiChiusoLaFinestra
  623.  CloseWindow 1
  624.  Use Window 0
  625. End Statement
  626.  
  627. Statement DataDiOggi{}
  628. SHARED Allarme$
  629. SHARED DataDiOggi$
  630. SHARED LunghezzaDataDiOggi
  631. SHARED LunghezzaScrittaAllarme
  632. SHARED RastPortFinestra
  633.  Giorni.l=SystemDate
  634.  Select WeekDay
  635.  Case 0
  636.   GiornoDellaSettimana$="Dom"
  637.  Case 1
  638.   GiornoDellaSettimana$="Lun"
  639.  Case 2
  640.   GiornoDellaSettimana$="Mar"
  641.  Case 3
  642.   GiornoDellaSettimana$="Mer"
  643.  Case 4
  644.   GiornoDellaSettimana$="Gio"
  645.  Case 5
  646.   GiornoDellaSettimana$="Ven"
  647.  Case 6
  648.   GiornoDellaSettimana$="Sab"
  649.  End Select
  650.  If Giorni>8400
  651.   Giorni-8400
  652.   Repeat
  653.    If Anno MOD 4=3
  654.     AnnoBisestile=True
  655.     If Giorni>365 Then Giorni-366 Else FineCicloInfinito=True
  656.    Else
  657.     AnnoBisestile=False
  658.     If Giorni>364 Then Giorni-365 Else FineCicloInfinito=True
  659.    EndIf
  660.    Anno+1
  661.    If FineCicloInfinito=True Pop Repeat:Goto FineCicloInfinito
  662.   Until False
  663.   FineCicloInfinito
  664.   Anno$=StripLead$(Str$(2000+Anno),32)
  665.   If AnnoBisestile=True
  666.    If Giorni>0 AND Giorni<32
  667.     Giorno$=StripLead$(Str$(Giorni),32)
  668.     Mese$="gennaio"
  669.    EndIf
  670.    If Giorni>31 AND Giorni<61
  671.     Giorno$=StripLead$(Str$(Giorni-31),32)
  672.     Mese$="febbraio"
  673.    EndIf
  674.    If Giorni>60 AND Giorni<92
  675.     Giorno$=StripLead$(Str$(Giorni-60),32)
  676.     Mese$="marzo"
  677.    EndIf
  678.    If Giorni>91 AND Giorni<122
  679.     Giorno$=StripLead$(Str$(Giorni-91),32)
  680.     Mese$="aprile"
  681.    EndIf
  682.    If Giorni>121 AND Giorni<153
  683.     Giorno$=StripLead$(Str$(Giorni-121),32)
  684.     Mese$="maggio"
  685.    EndIf
  686.    If Giorni>152 AND Giorni<183
  687.     Giorno$=StripLead$(Str$(Giorni-152),32)
  688.     Mese$="giugno"
  689.    EndIf
  690.    If Giorni>182 AND Giorni<214
  691.     Giorno$=StripLead$(Str$(Giorni-182),32)
  692.     Mese$="luglio"
  693.    EndIf
  694.    If Giorni>213 AND Giorni<245
  695.     Giorno$=StripLead$(Str$(Giorni-213),32)
  696.     Mese$="agosto"
  697.    EndIf
  698.    If Giorni>244 AND Giorni<275
  699.     Giorno$=StripLead$(Str$(Giorni-244),32)
  700.     Mese$="settembre"
  701.    EndIf
  702.    If Giorni>274 AND Giorni<306
  703.     Giorno$=StripLead$(Str$(Giorni-274),32)
  704.     Mese$="ottobre"
  705.    EndIf
  706.    If Giorni>305 AND Giorni<336
  707.     Giorno$=StripLead$(Str$(Giorni-305),32)
  708.     Mese$="novembre"
  709.    EndIf
  710.    If Giorni>335 AND Giorni<367
  711.     Giorno$=StripLead$(Str$(Giorni-335),32)
  712.     Mese$="dicembre"
  713.    EndIf
  714.   Else
  715.    If Giorni>0 AND Giorni<32
  716.     Giorno$=StripLead$(Str$(Giorni),32)
  717.     Mese$="gennaio"
  718.    EndIf
  719.    If Giorni>31 AND Giorni<60
  720.     Giorno$=StripLead$(Str$(Giorni-31),32)
  721.     Mese$="febbraio"
  722.    EndIf
  723.    If Giorni>59 AND Giorni<91
  724.     Giorno$=StripLead$(Str$(Giorni-59),32)
  725.     Mese$="marzo"
  726.    EndIf
  727.    If Giorni>90 AND Giorni<121
  728.     Giorno$=StripLead$(Str$(Giorni-90),32)
  729.     Mese$="aprile"
  730.    EndIf
  731.    If Giorni>120 AND Giorni<152
  732.     Giorno$=StripLead$(Str$(Giorni-120),32)
  733.     Mese$="maggio"
  734.    EndIf
  735.    If Giorni>151 AND Giorni<182
  736.     Giorno$=StripLead$(Str$(Giorni-151),32)
  737.     Mese$="giugno"
  738.    EndIf
  739.    If Giorni>181 AND Giorni<213
  740.     Giorno$=StripLead$(Str$(Giorni-181),32)
  741.     Mese$="luglio"
  742.    EndIf
  743.    If Giorni>212 AND Giorni<244
  744.     Giorno$=StripLead$(Str$(Giorni-212),32)
  745.     Mese$="agosto"
  746.    EndIf
  747.    If Giorni>243 AND Giorni<274
  748.     Giorno$=StripLead$(Str$(Giorni-243),32)
  749.     Mese$="settembre"
  750.    EndIf
  751.    If Giorni>273 AND Giorni<305
  752.     Giorno$=StripLead$(Str$(Giorni-273),32)
  753.     Mese$="ottobre"
  754.    EndIf
  755.    If Giorni>304 AND Giorni<335
  756.     Giorno$=StripLead$(Str$(Giorni-304),32)
  757.     Mese$="novembre"
  758.    EndIf
  759.    If Giorni>334 AND Giorni<366
  760.     Giorno$=StripLead$(Str$(Giorni-334),32)
  761.     Mese$="dicembre"
  762.    EndIf
  763.   EndIf
  764.  Else
  765.   Giorno$=Str$(Days)
  766.   Select Months
  767.   Case 1
  768.    Mese$="gennaio"
  769.   Case 2
  770.    Mese$="febbraio"
  771.   Case 3
  772.    Mese$="marzo"
  773.   Case 4
  774.    Mese$="aprile"
  775.   Case 5
  776.    Mese$="maggio"
  777.   Case 6
  778.    Mese$="giugno"
  779.   Case 7
  780.    Mese$="luglio"
  781.   Case 8
  782.    Mese$="agosto"
  783.   Case 9
  784.    Mese$="settembre"
  785.   Case 10
  786.    Mese$="ottobre"
  787.   Case 11
  788.    Mese$="novembre"
  789.   Case 12
  790.    Mese$="dicembre"
  791.   End Select
  792.   Anno$=Str$(Years)
  793.  EndIf
  794.  DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
  795.  LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
  796. End Statement
  797.  
  798. ;*********************************************
  799. ;Fine delle procedure ed inizio del programma
  800. ;Procedures end and program start
  801. ;*********************************
  802.  
  803. WBStartup
  804.  
  805. WbToScreen 0
  806.  
  807. IndirizzoSchermo.l=Peek.l(Addr Screen(0))
  808. LunXSchermo=Peek.w(IndirizzoSchermo+12)
  809.  
  810. FontOrologio$="Data70.font"
  811. AltezzaFont=13
  812.  
  813. AltezzaFontSchermo.b=8
  814. OpenFontPrefs
  815.  AltezzaFontSchermo=DefaultFontHeight(2)
  816. CloseFontPrefs
  817.  
  818. IconaOrologio$=ProgPath$+".info"
  819.  
  820. PosXFinestraZero=0
  821. PosYFinestraZero=AltezzaFontSchermo+3
  822. LunXFinestraZero=70
  823. LunYFinestraZero=30
  824. Angolo$="TOP-LEFT"
  825. ColoreTesto=1
  826. ColoreSfondo=0
  827.  
  828. LeggiToolType{}
  829.  
  830. LoadFont 0,FontOrologio$,AltezzaFont
  831.  
  832. LoadFont 1,"topaz.font",8
  833.  
  834. Select Angolo$
  835. Case "TOP-RIGHT"
  836.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  837.  PosXFinestraZero-(LunXFinestraZero-1)
  838. Case "BOTTOM-RIGHT"
  839.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  840.  PosXFinestraZero-(LunXFinestraZero-1)
  841.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  842.  PosYFinestraZero-(LunYFinestraZero-1)
  843. Case "BOTTOM-LEFT"
  844.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  845.  PosYFinestraZero-(LunYFinestraZero-1)
  846. End Select
  847.  
  848. AggiustaDimensioniFinestraZero{}
  849. ApriFinestraZero{}
  850.  
  851. DataDiOggi$=Date$(SystemDate)
  852. DataDiOggi{}
  853.  
  854. LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+4
  855. LunYFinestraZero=WTopOff+AltezzaFont*2+4
  856.  
  857. Select Angolo$
  858. Case "TOP-LEFT"
  859.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  860.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  861. Case "TOP-RIGHT"
  862.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  863.  PosXFinestraZero-(LunXFinestraZero-1)
  864.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  865. Case "BOTTOM-RIGHT"
  866.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  867.  PosXFinestraZero-(LunXFinestraZero-1)
  868.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  869.  PosYFinestraZero-(LunYFinestraZero-1)
  870. Case "BOTTOM-LEFT"
  871.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  872.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  873.  PosYFinestraZero-(LunYFinestraZero-1)
  874. End Select
  875.  
  876. CloseWindow 0
  877.  
  878. AggiustaDimensioniFinestraZero{}
  879. ApriFinestraZero{}
  880.  
  881. XAllarme=InnerWidth-1-AltezzaFont/2
  882. YAllarme=InnerHeight-1-AltezzaFont/2
  883. RaggioMassimoCerchio=AltezzaFont/2
  884. SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  885.  
  886. Repeat
  887.  EventoFinestraZero.l=Event
  888.  
  889.  Select EventoFinestraZero
  890.  Case #HaiCambiatoLeDimensioniDellaFinestra
  891.   AltezzaFont=InnerHeight/2
  892.   If AltezzaFont<4 Then AltezzaFont=4
  893.   LunXFinestraZero=WindowWidth
  894.   LunYFinestraZero=WindowHeight
  895.   RaggioMassimoCerchio=AltezzaFont/2
  896.   LoadFont 0,FontOrologio$,AltezzaFont
  897.   WindowFont 0
  898.   WCls ColoreSfondo
  899.   XAllarme=InnerWidth-1-AltezzaFont/2
  900.   YAllarme=InnerHeight-1-AltezzaFont/2
  901.   RaggioMassimoCerchio=AltezzaFont/2
  902.   RaggioCerchio=RaggioMassimoCerchio
  903.   SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  904.  Case #HaiPremutoUnTastoDelTopo
  905.   Select MButtons
  906.   Case 1
  907.    If StatoAllarme=On AND Zone(WMouseX,WMouseY)=0
  908.     StatoAllarme=Off
  909.    Else
  910.     PrecedenteFontOrologio$=FontOrologio$
  911.     PrecedenteAltezzaFont.b=AltezzaFont
  912.     PrecedenteColoreSfondo=ColoreSfondo
  913.  
  914.     Parametri{}
  915.  
  916.     Use Window 0
  917.  
  918.     FinestraZeroAggiornata.b=False
  919.     If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
  920.      LoadFont 0,FontOrologio$,AltezzaFont
  921.      WindowFont 0
  922.  
  923.      DataDiOggi{}
  924.  
  925.      LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+2
  926.      LunYFinestraZero=WTopOff+AltezzaFont*2+4
  927.  
  928.      CloseWindow 0
  929.  
  930.      AggiustaDimensioniFinestraZero{}
  931.      ApriFinestraZero{}
  932.  
  933.      FinestraZeroAggiornata=True
  934.     EndIf
  935.     If FinestraZeroAggiornata=False
  936.      If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
  937.  
  938.       CloseWindow 0
  939.  
  940.       AggiustaDimensioniFinestraZero{}
  941.       ApriFinestraZero{}
  942.      EndIf
  943.     EndIf
  944.     XAllarme=InnerWidth-1-AltezzaFont/2
  945.     YAllarme=InnerHeight-1-AltezzaFont/2
  946.     RaggioMassimoCerchio=AltezzaFont/2
  947.     RaggioCerchio=RaggioMassimoCerchio
  948.     SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  949.    EndIf
  950.    If ColoreSfondo<>PrecedenteColoreSfondo Then WCls ColoreSfondo
  951.   End Select
  952.   FlushEvents #HaiPremutoUnTastoDelTopo
  953.  End Select
  954.  
  955.  DataDiOggi$=Date$(SystemDate)
  956.  
  957.  DataDiOggi{}
  958.  
  959.  XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
  960.  WColour ColoreTesto,ColoreSfondo
  961.  WLocate XData,0
  962.  Print DataDiOggi$
  963.  
  964.  OraDiOggi$="  "+Str$(Hours/10)
  965.  OraDiOggi$+Str$(Hours MOD 10)+":"
  966.  OraDiOggi$+Str$(Mins/10)
  967.  OraDiOggi$+Str$(Mins MOD 10)+":"
  968.  OraDiOggi$+Str$(Secs/10)
  969.  OraDiOggi$+Str$(Secs MOD 10)+"  "
  970.  LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
  971.  XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2
  972.  WLocate XOra,AltezzaFont
  973.  Print OraDiOggi$
  974.  
  975.  OraDiOggi$=StripTrail$(StripLead$(OraDiOggi$,32),32)
  976.  
  977.  Minuti.b=Val(Mid$(OraDiOggi$,4,2))
  978.  If Minuti=0
  979.   If OraSuonata.b=False
  980.    Ora.b=Val(Left$(OraDiOggi$,2)) MOD 12
  981.    If Ora=0 Then Ora=12
  982.   EndIf
  983.   If Ora>0
  984.    BeepScreen 0
  985.    Ora-1
  986.    OraSuonata=True
  987.   EndIf
  988.  Else
  989.   If OraSuonata=True Then OraSuonata=False
  990.  EndIf
  991.  
  992.  If StatoAllarme=On
  993.   If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  994.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreTesto
  995.  EndIf
  996.  
  997.  If EventoFinestraZero<>#HaiChiusoLaFinestra Then Delay_ 50
  998.  
  999.  If StatoAllarme=On
  1000.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreSfondo
  1001.   RaggioCerchio+1
  1002.   If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
  1003.  EndIf
  1004. Until EventoFinestraZero=#HaiChiusoLaFinestra
  1005. End
  1006.